package net

import "github.com/gogf/gf/v2/encoding/gjson"

func NewException(code ErrorCode, messages ...string) *Exception {
	e := &Exception{
		Code: code,
	}

	if len(messages) > 0 {
		e.Message = messages[0]
	}

	return e
}

type Exception struct {
	HttpStatus int       `json:"-"`
	Code       ErrorCode `json:"status"`
	Message    string    `json:"message,omitempty"`
}

func (r *Exception) SetStatusCode(statusCode int) *Exception {
	r.HttpStatus = statusCode

	return r
}

func (r *Exception) Error() string {
	return r.Message
}
func (r *Exception) String() string {
	j, err := gjson.EncodeString(r)
	if err != nil {
		panic(err)
	}

	return j
}
